package pack01;

import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Arrays;
import java.util.Scanner;

/**
 * @作者：JustOne
 * @时间：2021/8/13 - 13:59
 */
public class Demo12_homework {
    public static void main(String[] args) throws IOException {
        /*
         * 作业：对"D:/刘景景的测试文件夹/user.txt"中的用户进行修改密码。
         * 1,提示用户输入用户名。
         * 2,循环读取该文件，循环次数应当是文件长度/100。
         * 3,每条记录读取时，首先读取32字节，这是用户名，将该字节按照UTF-8编码转换为字符串并trim()。
         * 4,比对用户名，如果不是用户指定的用户名，则读取下一条。
         * 5,如果是用户指定的用户名，则提示用户输入原密码、新密码、确认新密码。
         * 6,必须原密码正确、且两次新密码相同再可修改。
         * 7,如果从头到尾都没有查到用户输入的用户名，就输出"查无此人"。
         */

        RandomAccessFile raf = new RandomAccessFile("D:/刘景景的测试文件夹/user.txt","rw");

        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你想修改的用户");
        String youName = sc.nextLine();

        boolean flag = false;//是否有此人

        byte[] data = new byte[32];
        for (int i = 0; i < raf.length()/100; i++) {
            raf.seek(i*100);
            raf.read(data);
            String username = new String(data,"UTF-8").trim();

            if(youName.equals(username)){
                flag = true;

                System.out.println("查到这人了，请输入原密码");
                String youPw = sc.next();
                System.out.println("请输入新密码");
                String newPw1 = sc.next();
                System.out.println("请再次输入新密码");
                String newPw2 = sc.next();

                //比较原密码
                raf.read(data);
                String password = new String(data,"UTF-8").trim();
                if(youPw.equals(password)){
                    //比较两次新密码
                    if(newPw1.equals(newPw2)){
                        data = newPw1.getBytes("UTF-8");
                        data = Arrays.copyOf(data,32);
                        raf.seek(raf.getFilePointer()- 32);
                        raf.write(data);
                        System.out.println("密码修改成功");
                    }else{
                        System.out.println("再次新密码不一致，修改失败");
                    }
                }else{
                    System.out.println("原密码不正确，修改失败");
                }

            }
        }

        if(!flag){
            System.out.println("查无此人");
        }

        raf.close();
    }
}
